package com.zlx.guguanjia.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.zlx.guguanjia.entity.SysArea;
import com.zlx.guguanjia.mapper.SysAreaMapper;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author 周罗校
 * @Description
 * @ClassName SysAreaListener
 * @date 2020.11.02 13:33:37
 * 该版权归周罗校所有，最终解释权以官方为准
 */

/**
 * 区域excel读监听处理对象：
 * 1.invoke读取一行数据后的处理逻辑
 * 2.doAfterAllAnalysed  所有数据读取完毕后最后处理逻辑
 *
 * 官方要求不能用spring来管理对象，如果需要spring容器管理的对象，通过构造器传参
 */
public class SysAreaListener extends AnalysisEventListener<SysArea> {
    private List<SysArea> list = new ArrayList<>();

    private SysAreaMapper mapper;

    public SysAreaListener(SysAreaMapper mapper) {
        this.mapper = mapper;
    }

    public SysAreaListener() {
    }

    @Override
    public void invoke(SysArea area, AnalysisContext analysisContext) {
//        读取到信息封装成对象
        System.out.println(area);
        list.add(area);
        if (list.size()>=10){
//            System.out.println("批量保存到数据据库");
            //批量添加
            mapper.insertBitch(list);
            //清除集合
            list.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        if(list.size()>0){
//            System.out.println("批量保存到数据库....");
            mapper.insertBitch(list);
            list.clear();
        }
    }
}
